package com.aorise.service.camera;

import com.aorise.model.camera.*;
import com.aorise.utils.json.InnerResult;
import com.aorise.utils.page.Page;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * @Author:cat
 * @Desicription: 视频设备接口服务类
 * @Date:Created in 2019-05-27
 * @Modified By:
 */
public interface CameraService {

    /**
     * @Author:cat
     * @Description 分页查询视频设备信息
     * @params: map 查询条件
     * @params: page 分页
     * @Date:2019-05-27
     * @Return: List<CameraModel> 视频设备信息集合
     * @Modified By:
     */
    List<CameraModel> getAllCameraListByPage(Map<String, Object> map, Page page);

    /**
     * @Author:cat
     * @Description 根据ID查询视频设备详情
     * @params: id 主键ID
     * @params: flag 是否受配置限制：1是，2否
     * @Date:2019-05-27
     * @Return: CameraModel 视频设备信息
     * @Modified By:
     */
    CameraModel getCameraById(Integer id,Integer flag);

    /**
     * @Author:cat
     * @Description 新增视频设备信息
     * @params: cameraAddVO 视频设备信息
     * @Date:2019-05-27
     * @Return: Integer 主键
     * @Modified By:
     */
    Integer addCamera(CameraAddVO cameraAddVO);

    /**
     * @Author:cat
     * @Description 修改视频设备信息
     * @params: cameraEditVO 视频设备信息
     * @Date:2019-05-27
     * @Return: Integer 影响行数
     * @Modified By:
     */
    Integer updateCamera(CameraEditVO cameraEditVO);

    /**
     * @Author:cat
     * @Description 视频设备信息
     * @params: file Excel文件
     * @params: createUser 创建人
     * @params: request
     * @Date:2019-05-28
     * @Return: InnerResult<String> 错误List集合
     * @Modified By:
     */
    InnerResult<String> importCamera(MultipartFile file, Integer createUser);

    /**
     * @Author:cat
     * @Description 导出视频设备信息
     * @params: map 查询条件
     * @params: response
     * @Date:2019-05-29
     * @Modified By:
     */
    void exportCamera(Map<String, Object> map, HttpServletResponse response);

    /**
     * @Author:cat
     * @Description 下载导入视频设备信息模板
     * @params: response
     * @Date:2019-05-29
     * @Modified By:
     */
    void downloadCameraTemplate(HttpServletResponse response);

    /**
     * @Author:cat
     * @Description 批量修改视频设备的入网状态、异常类型、停机状态、坐标
     * @params: map 查询条件Map
     * @Date:2019-05-30
     * @Return: Integer 影响行数
     * @Modified By:
     */
    Integer updateCameraStatus(Map<String, Object> map);

    /**
     * @Author:cat
     * @Description 根据筛选条件查询视频设备信息
     * @params: map 查询条件
     * @Date:2019-06-01
     * @Return: List<CameraModel> 视频设备信息集合
     * @Modified By:
     */
    List<CameraModel> getCameraList(Map<String, Object> map);

    /**
     * @Author:cat
     * @Description 每天0点1分更新视频设备坐标、停机状态
     * @Date:2019-06-12
     * @Modified By:
     */
    void updateCameraAttribute();
}
